const express = require('express')
const md5 = require('md5')
const UserModel = require('../db/models/UserModel')
const { RES_CODE } = require('../utils/contants')
const { createToken } = require('../utils/tokenUtils')
const verifyToken = require('../middlewares/verifyToken')

const router = express.Router()


// 注册登陆路由
/* 
整体3步
1. 读取参数数据
2. 处理数据(操作数据库)
3. 返回响应
*/

/*
登录用户验证  成功就生成token
*/
router.post('/login', async (req, res) => {
  // 读取参数
  const { username, pwd } = req.body
  try {
    const user = await UserModel.findOne({ username, pwd: md5(pwd) })

    // 如果没有，返回提示登录失败信息
    if (!user) {
      res.json({
        code: RES_CODE.DATA_ERROR,
        message: '用户名或密码错误'
      })
      return
    }
    console.log(user)
    // 如果已经存在user，根据user的id生成token， 返回包含token和user的数据
    const token = createToken(user._id)
    res.json({
      code: RES_CODE.SUCCESS,
      data: {
        token,
        user,
      },
      message: '登录成功'
    })

  } catch (error) {
    res.send({
      code: RES_CODE.SERVER_ERROR,
      message: '服务器出错',
      error: error
    })
  }
})

/* 
获取登陆用户信息
*/
router.get('/info', verifyToken, async (req, res) => {
  // 获取token验证中间件得到的id
  const userId = req.userId
  // 数据库查询得到用户数据
  const user = await UserModel.findById(userId)
  // 将用户信息返回
  res.json({
    code: RES_CODE.SUCCESS,
    data: user,
    message: '获取登录用户信息成功'
  })
})

/* 
退出登陆的接口
*/
router.get('/logout', verifyToken, (req, res) => {
  // 清除保存在后台的当前用户的一些数据  当前没有

  // 返回成功响应
  res.json({
    code: RES_CODE.SUCCESS,
    message: '退出成功'
  })
})






module.exports = router